/*
 * Clase que abre el archivo y lo lee para luego cargarlo en la matríz
 */
package Logic;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Ramiro
 */
public class LectorMatrices {

    private File archivo = null;
    private FileReader fr = null;
    private BufferedReader br = null;
    private String ruta = "";
    private String nombreArchivo = "";
    //Vector de vectores
    private Vector<Vector> matriz = new Vector<Vector>();
    //private MatrizFor matriz = new MatrizFor();

    /*
     * Constructor al que se le pasa como parámetro la ruta y el nombre del archivo.
     */
    public LectorMatrices(String path, String nombreArchivo) {
        this.ruta = path;
        this.nombreArchivo = nombreArchivo;
    }

    /*
     * Constructor
     */
    LectorMatrices() {
        this.ruta = ".\\mlcfiles\\MLC.mlc";

    }

    /*
     * Abre el archivo y lo lee
     */
    public Vector<Vector> AbrirArchivo() throws IOException {
        //public MatrizFor AbrirArchivo() throws Exception {
        String t = "";
        String linea = "";
        String temp = new String();
        int fieldTemp = 0;
        int length = 0;
        Vector<Double> fila = new Vector<Double>();
        //VectorMatrizFor fila = new VectorMatrizFor();
        Character caracter = 0;

        try {
            this.archivo = new File(ruta + "\\" + nombreArchivo);
            this.fr = new FileReader(archivo);
            this.br = new BufferedReader(fr);
            // Lectura del fichero linea por linea


            while ((linea = br.readLine()) != null) {
                t = linea;
                fieldTemp = 0;
                length = t.length();
                caracter = 0;

                while (caracter != null) {

                    caracter = t.charAt(fieldTemp);

                    if ((caracter != ',') && (fieldTemp <= length)) {
                        temp = temp.concat(caracter.toString());
                        fieldTemp++;
                    }
                    if ((caracter == ',') && (fieldTemp <= length)) {
                        fila.add(Double.parseDouble(temp));
                        temp = "";
                        fieldTemp++;
                    }
                    if (fieldTemp == length) {
                        fila.add(Double.parseDouble(temp));
                        //matriz.addFila(fila);
                        matriz.add(fila);
                        temp = "";
                        fieldTemp = 0;
                        fila = new Vector<Double>();
                        //fila = new VectorMatrizFor();
                        caracter = null;
                    }
                }
            }
        } catch (FileNotFoundException e) {
            throw e;

        } finally {
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return matriz;
    }

    public String getRuta() {
        return this.ruta;
    }

    public String getNombreArchivo() {
        return this.nombreArchivo;
    }
}
